package com.me.mysqladmin.util;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;

/**
 * Map操作工具类
 * @author 周东
 */
public class MapUtil {
	/**
	 * 批量删除Map中的键值对
	 * @param keyList
	 */
	public static void removeKeys(Map<?, ?> map, List<?> keyList){
		if(map == null || map.isEmpty() || keyList == null || keyList.isEmpty()){
			return;
		}
		for(Object key : keyList){
			if(!map.containsKey(key)){
				continue;
			}
			map.remove(key);
		}
	}
	
	/**
	 * 简化Map中的元素
	 * @param map	简化前的Map
	 * @param type	指定了简化后的属性
	 * @return
	 */
	public static <T> Map<String, Object> simplify(Map<String, Object> map, Class<T> type){
		List<String> keysToRemove = Collections.synchronizedList(new ArrayList<String>());
		for(String key : map.keySet()){
			if(!BeanUtil.containsProp(type, key)){
				keysToRemove.add(key);
			}
		}
		removeKeys(map, keysToRemove);
		return map;
	}
}
